package com.tarena.lbs.common.utils;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * 操作json的工具类
 * 1 把java对象转化为json
 * 2 把json转化为java对象
 */
public class JsonUtils {

    /**
     *  jackson 是 Java 生态中一个非常流行的用于处理 JSON 的开源库。
     *  它功能强大、性能高，广泛应用于 Java 项目中进行 JSON 序列化与反序列化操作。
     */
    private static final ObjectMapper mapper = new ObjectMapper();

    /**
     * 把java对象转化为json
     * @param obj java对象
     * @return json字符串
     */
    public static String toJson(Object obj) {
        try {
            return mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 把json对象转化为对象
     * @param json json字符串
     * @param clazz 要转化的目标类型
     * @return 目标类型的java对象
     */
    public static <T> T fromJson(String json, Class<T> clazz) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            return mapper.readValue(json, clazz);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}
